#ifndef __DEVICE_H__
#define __DEVICE_H__

#ifdef __cplusplus
extern "C" {
#endif

#include <stdint.h>
#include "device_def.h"

/**
 * @brief 打开设备
 * @param pstDevDesc 设备描述结构体指针 @see DevDesc_t
 * @return @see Dev_Ret_t
 */
Dev_Ret_t
device_open(DevDesc_t* pstDevDesc); 

/**
 * @brief 关闭设备
 * @param pstDevice 设备结构体指针 @see Device_t
 * @return @see Dev_Ret_t
 */
Dev_Ret_t
device_close(Device_t *pstDevice); 

/**
 * @brief 设备读接口
 * @param pstDevice 设备结构体指针 @see Device_t
 * @param pu8Buf 读缓冲区指针
 * @param u32Len 读长度
 * @return @see Dev_Ret_t
 */
Dev_Ret_t
device_read(Device_t *pstDevice, uint8_t* pu8Buf, uint32_t u32Len);

/**
 * @brief 设备写接口
 * @param pstDevice 设备结构体指针 @see Device_t
 * @param pu8Buf 写缓冲区指针
 * @param u32Len 写长度
 */
Dev_Ret_t
device_write(Device_t *pstDevice, uint8_t* pu8Buf, uint32_t u32Len);

/**
 * @brief 设备 ioctl 接口
 * @param pstDevice 设备结构体指针 @see Device_t
 * @param u8Cmd 命令
 * @param pvArg 参数
 * @return @see Dev_Ret_t
 */
Dev_Ret_t
device_ioctl(Device_t *pstDevice, uint8_t u8Cmd, void *pvArg);

#ifdef __cplusplus
}
#endif

#endif /* __DEVICE_H__ */
